An RPC is a mechanism that allows an execution of a function in the address space of another process, which may be in a different computer. In a typical RPC procedure, an RPC request is generated by a client and then sent to a server. An RPC response, which is in response to the RPC request, is received by the client from the server.
In the state of the art, a common approach is that the client sends the RPC request and processes its corresponding RPC response in the same thread. In a situation where the RPC request is generated and sent by a first thread, a processor of the client is occupied by the first thread until the corresponding RPC response is received and processed. During a time interval between the RPC request and its corresponding RPC response, the first thread continuously polls a network card. Further, the time interval can become large due to a latency introduced by a network communication. Therefore, the processor cannot be released or used by other threads in a relatively long period of time.
If there are multiple threads in the client and each thread generates an RPC request with a destination to one or more remote computers, the efficiency of the RPC procedure executed by the client is low due to a continuous occupation of one thread.